#include<iostream>
#include<algorithm>
using namespace std;
struct mat{
    int l,r,flag;
    bool operator<(const mat&temp) const{
        return l<temp.l;
    }
}item[100];
int cnt,last[100];
int main()
{
    int n;cin>>n;
    for(int i=1;i<=n;i++)
    cin>>item[i].l>>item[i].r;
    sort(item+1,item+1+n);
    cnt=1;last[1]=item[1].r;item[1].flag=1;
    for(int i=2;i<=n;i++)
    {
        int mark=1;
        for(int i=1;i<=cnt;i++)
        {
            if(last[i]<last[mark])
            mark=i;
        }
        if(item[i].l<last[mark])
        last[++cnt]=item[i].r,item[i].flag=cnt;
        else last[mark]=item[i].r,item[i].flag=mark;
    }
    cout<<cnt<<endl;
    for(int i=1;i<=cnt;i++)
    {
        for(int j=1;j<=n;j++)
        {
            if(item[j].flag==i)
            cout<<"["<<item[j].l<<","<<item[j].r<<"]"<<"    ";
        }
        cout<<endl;
    }
}

// 11
// 1 4
// 3 5
// 0 6
// 5 7
// 3 8
// 5 9
// 6 10
// 8 11
// 8 12
// 2 13
// 12 14